package br.edu.fanor.esfinge.dao.impl;

import java.util.List;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.edu.fanor.esfinge.dao.UsuarioDAO;
import br.edu.fanor.esfinge.entity.Usuario;

@TransactionAttribute(TransactionAttributeType.REQUIRED)
@Stateless(mappedName="ejb/UsuarioDAO")
public  class UsuarioDAOImpl implements UsuarioDAO{

	@PersistenceContext
	public EntityManager em;
	
	@Override
	public Usuario inserir(Usuario usuario) {
		em.persist(usuario);
		return usuario;
	}

	@Override
	public Usuario buscarPorId(Long id) {
		return em.find(Usuario.class, id);
	}

	@Override
	public void remover(Usuario usuario) {
		em.remove(usuario);
		
	}
	
	@Override
	public void sincronizar(Usuario usuario){
		em.refresh(usuario);
	}

	@Override
	public Usuario atualizar(Usuario usuario) {
		em.merge(usuario);
		return usuario;
	}

	public Usuario buscarPorNome(String nome){
		return em.find(Usuario.class, nome);
	}
	
	@SuppressWarnings("unchecked")
	public List<Usuario> buscarUsuarioPorNome(String nome){
		Query query = em.createQuery("select e from Usuario e where e.nome like :nome");
		query.setParameter("nome", nome);
		return (List<Usuario>)query.getResultList();
	}



}
